package com.test.postprocesser;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.stereotype.Component;

/**
 * @Aurher: QiaoHang
 * @Description:
 * @Data: 2019/9/13 14:38
 * @Modified By:    Bean的初始化前后的处理器
 */
@Component
public class MyBeanPostProcesser implements BeanPostProcessor {

    /**
     * bean 初始化之前的处理器 (construct --> postProcessBeforeInitialization---> @PostConstruct ---> afterPropertiesSet----> init-method)
     * 必须返回一个对象，可以是源对象o  可以以在这里加工返回swap后的对象。否则不进入容器
     * @param o 源对象
     * @param beanname 实例在容器中的名字
     * @return
     * @throws BeansException
     */
    @Override
    public Object postProcessBeforeInitialization(Object o, String beanname) throws BeansException {
        System.out.println("postProcessBeforeInitialization..."+beanname+"....."+o);
        return o;
    }

    // 必须返回一个对象，可以是源对象o  可以以在这里加工返回swap后的对象。否则不进入容器
    @Override
    public Object postProcessAfterInitialization(Object o, String beanname) throws BeansException {
        System.out.println("postProcessAfterInitialization..."+beanname+"....."+o);
        return o;
    }
}
